package pe.gob.onpe.ctrlNegocio;

import java.util.List;
import javax.ejb.Remote;

import pe.gob.onpe.pojo.ActaEscrutinioPojo;
import pe.gob.onpe.pojo.BusquedaPadronSolicitantePojo;
import pe.gob.onpe.pojo.CierreVotacionPojo;
import pe.gob.onpe.pojo.ConfirmacionVotoPojo;
import pe.gob.onpe.pojo.CronogramaElectoralPojo;
import pe.gob.onpe.pojo.DatosCedulaVotacionPojo;
import pe.gob.onpe.pojo.ElectorPojo;
import pe.gob.onpe.pojo.ListaCandidatosPostulantePojo;
import pe.gob.onpe.pojo.ParametroPojo;
import pe.gob.onpe.pojo.ProcesoElectoralTipoEleccionPojo;
import pe.gob.onpe.pojo.TipoEleccionPojo;
import pe.gob.onpe.pojo.PadronElectoralSolicitantePojo;
import pe.gob.onpe.pojo.UsuarioPojo;

@Remote
public interface CNEjecutarJornadaElectoral {

	ElectorPojo validarElector(String pin, String contrasena);
	List<DatosCedulaVotacionPojo> obtenerDatosCedula(Long procesoElectoralId);
	ProcesoElectoralTipoEleccionPojo obtenerProcesoElectoralTipoEleccionCedula(Long procesoElectoralId);
	ActaEscrutinioPojo obtenerActaEscrutinio(Integer procesoElectoralId,Integer tipoEleccionId);
	List<TipoEleccionPojo> tipoEleccionPorProcesoElectoral(Long procesoElectoralId);
	ListaCandidatosPostulantePojo obtenerListaCandidato(Long procesoElectoralId, Long listaCandPostId);
	void registrarVoto(Long procesoElectoralId, Long listaCandPostId, Long tipoEleccionId);
	List<ParametroPojo> obtenerTiposCierre();
	PadronElectoralSolicitantePojo obtenerElecPadronSolic(String numeroDocumento, Long procesoElectoralId);
	UsuarioPojo validarUsuario(String login,String contrasena);
	void registraCierreVotacion(CierreVotacionPojo oCierreVotacionPojo);
	ConfirmacionVotoPojo registrarEmisionDeVoto(Long procesoElectoralID, String numeroDocumento);
	boolean registrarPadronSolicitante(Long procesoElectoralId, String dni, String apaterno, String amaterno, String nombres, String incosistencia, String eincosistencia);
	boolean eliminarPadronSolicitante(Long idProceso,String dni);
	public BusquedaPadronSolicitantePojo buscarPadronSolicitante(Long procesoElectoralId,String numeroDocumento,String nombre,String apellidoPaterno,String apellidoMaterno,String incosistencia,String estadoIncosistencia,int inicio,int fin);
	
	boolean modificarPadronSolicitante(Long procesoElectoralId,	String dni,
										String apaterno,		String amaterno, String nombres,
										String incosistencia,	String eincosistencia);
		
	Long totalCiudadanosVotaron(Long procesoElectoralId);
	
	CronogramaElectoralPojo buscarActividadCronograma(Long procesoElectoralId, Long actividadElectoralId);
	boolean realizaActividadProcElectoral(Long procesoElectoralId, Long actividadElectoralId);
	
}
